Implement New Mexico Child Care Assistance Program (CCAP)#8707
Open
hua7450 wants to merge 6 commits into
Open
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Engine#8706) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8707 +/- ##
==========================================
Coverage 100.00% 100.00%
==========================================
Files 3 15 +12
Lines 47 232 +185
Branches 0 3 +3
==========================================
+ Hits 47 232 +185
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…rence cleanups - Immigration test (is_ccdf_immigration_eligible_child) now gated on a new immigration_test_in_effect toggle (true through 2025-10-31, false from 2025-11-01): under Universal Child Care, a child without federally-eligible status is served with state funds, so the child-level citizenship bar (8.15.2.11.E NMAC) no longer gates. - Removed 'p.N' page numbers from 7 rate-flyer reference titles (page stays in #page=). - Fixed age_group/months citation to 8.15.2.7(I)(2)(a)-(d) NMAC. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Countable income: count only caretaker (head/spouse) income per 8.15.2.11.C(3), excluding all legal dependents' income; split the social_security aggregate into its non-disability components so SSDI is exempt for everyone (8.15.2.11.C(6)). - Asset test: reuse federal is_ccdf_asset_eligible; NM's $1,000,000 cap is the federal CCDF limit (CCDBG 2014), so the redundant state asset parameter and variable are removed. - Activity test: add meets_ccdf_activity_test as a fallback for approved activities not modeled individually (job training, job search, temporary leave). - Clarify the UCC toggle comments as New Mexico's state Universal Child Care initiative. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements New Mexico's Child Care Assistance Program (CCAP), administered by the Early Childhood Education and Care Department (ECECD), under 8.15.2 NMAC. The subsidy reimburses providers per child based on a four-dimensional rate table (provider type × FOCUS star level × age group × service unit), with copays waived since 2022-05-01 and a no-income-limit Universal Child Care era beginning 2025-11-01.
Closes #8706
Regulatory Authority
#page=anchor). Subsections used:Eligibility
nm_ccap_eligible_child—age < 13(eligibility/child_age_limit.yaml= 13). 6-week lower bound NOT modeled (see Not Modeled)nm_ccap_eligible_child—has_developmental_delay & age < 18(eligibility/special_needs_child_age_limit.yaml= 18). Court-supervision route not modeled (no PE input)defined_for = StateCode.NMon all NM CCAP variablesimmigration_test_in_effect. Reuses federalis_ccdf_immigration_eligible_childis_ccdf_asset_eligible— NM's $1,000,000 cap is the federal CCDF limit (gov/hhs/ccdf/asset_limit.yaml, CCDBG 2014), so no state-specific parameter is needed. Applies for all years; rarely bindsnm_ccap_activity_eligible— each head/spouse caretakerweekly_hours_worked > 0ORis_full_time_student, withmeets_ccdf_activity_testas a unit-level fallback for approved activities not modeled individually (job training, job search, temporary leave)nm_ccap_income_eligiblereadsnm_ccap_enrolledto pickfpl_limit/initial.yaml(2.0) vscontinuation.yaml(2.5) againstspm_unit_fpgis_tanf_enrolledcategorical bypass innm_ccap_income_eligible(also breaks the CCAP↔TANF circular dependency)eligibility/income_limit_in_effect.yamltogglestrue → falseon 2025-11-01; income test short-circuits to eligiblenm_ccap_countable_incomecounts only caretaker (tax-unit head/spouse) income per C(3) — all legal dependents' income (incl. children's earnings and Social Security) is excluded. Sources are a positive list (income/countable_income/sources.yaml); SSDI is exempt for everyone (C(6)) by listing only the non-disability Social Security components, and other exempt categories are excluded by omissionNote: the parent's immigration status is never an eligibility factor (45 CFR 98.20(c)); only the child's citizenship/qualified-immigrant status was ever modeled, and that child-level test toggles off under UCC (the child is then served with state funds — immigration status sets only the funding source, not eligibility).
Benefit Calculation
For each eligible child, the per-child subsidy is the lesser of the provider reimbursement rate and the actual pre-subsidy childcare charge, minus the copay, floored at zero:
The SPMUnit
nm_ccapbenefit sums this across eligible children. The copay (nm_ccap_copay) is $0 for all modeled periods becausecopay/waived.yamlistruefrom 2022-05-01.The provider rate (
nm_ccap_monthly_rate) is a four-dimensional lookup:nm_ccap_provider_typeenum) × FOCUS star level (nm_ccap_focus_levelenum) × age group (nm_ccap_age_group, derived from age-in-months brackets) — yields the full-time base rate.nm_ccap_service_unit) scales the base rate byservice_unit_fraction.yaml: Full time = 100%, Part time 1 = 75%, Part time 2 = 50%, Part time 3 = 25%.nm_ccap_non_traditional_hours) adds +5% / +10% / +15% of the applicable rate for after-hours care (7pm–7am weekdays and weekends).Registered Home / In-Home providers use a single rate per age group (no star levels).
Provider Reimbursement Rates
Rates come from the ECECD Child Care Assistance Rates flyer (Effective August 2023). Full-time base monthly rates are stored per provider type:
rates/center.yamlandrates/group_home.yamlandrates/family_home.yaml—breakdown: [focus_level, age_group], five FOCUS levels (2-Star, 2+Star, 3-Star, 4-Star, 5-Star) × four age groups (Infant, Toddler, Preschool, School Age).rates/registered_home.yaml—breakdown: [age_group], single rate, no star levels.rates/service_unit_fraction.yaml— FT/PT1/PT2/PT3 fractions (1.0 / 0.75 / 0.50 / 0.25) applied once, so part-time columns are not transcribed per provider.All 84 rate cells were verified against the rate-flyer PDF (pp. 1–5) at 1200 DPI — every full-time base rate, the service-unit fractions, and the non-traditional differential match exactly. Age-group boundaries (0–23 / 24–35 / 36–71 / 72+ months) follow the 8.15.2.7 definitions, which are more precise than the flyer's age labels.
Requirements Coverage
eligibility/child_age_limit.yamlnm_ccap_eligible_childnm_ccap_eligible_child.yamleligibility/special_needs_child_age_limit.yamlnm_ccap_eligible_childnm_ccap_eligible_child.yaml(cases 4,5,7,8)defined_for=StateCode.NM)integration.yaml(case 7)eligibility/immigration_test_in_effect.yamlnm_ccap_eligible_childnm_ccap_eligible_child.yaml(cases 6, 11, 12)gov/hhs/ccdf/asset_limit.yaml)is_ccdf_asset_eligible(reused)nm_ccap_eligible.yaml(case 4, excess assets → ineligible)nm_ccap_activity_eligible(meets_ccdf_activity_testfallback)nm_ccap_activity_eligible.yaml(7 cases)fpl_limit/initial.yaml,fpl_limit/continuation.yamlnm_ccap_income_eligible,nm_ccap_enrollednm_ccap_income_eligible.yamlnm_ccap_income_eligible(is_tanf_enrolled)nm_ccap_income_eligible.yaml,integration.yaml(case 4)eligibility/income_limit_in_effect.yamlnm_ccap_income_eligiblenm_ccap_income_eligible.yaml(2026-01),integration.yaml(case 6)income/countable_income/sources.yamlnm_ccap_countable_incomenm_ccap_countable_income.yaml(5 cases)nm_ccap_countable_incomenm_ccap_countable_income.yaml(cases 2, 4, 5)nm_ccapintegration.yaml(13 cases)rates/{center,group_home,family_home,registered_home}.yamlnm_ccap_provider_typenm_ccap_monthly_rate.yaml(cases 1–13)nm_ccap_focus_levelnm_ccap_monthly_rate.yaml(cases 1–5)rates/age_group/months.yamlnm_ccap_age_groupnm_ccap_age_group.yamlrates/service_unit_fraction.yaml,rates/service_unit/hours.yamlnm_ccap_service_unitnm_ccap_service_unit.yaml,nm_ccap_monthly_rate.yaml(cases 14–16)supplements/non_traditional_hours.yamlnm_ccap_non_traditional_hoursnm_ccap_monthly_rate.yaml(cases 17–22),integration.yaml(case 5)copay/waived.yamlnm_ccap_copaynm_ccap_copay.yamlgov/hhs/ccdf/child_care_subsidy_programs.yamlnm_child_care_subsidiesprograms.yamlnm_ccapNot Modeled
agehas no sub-year granularity (all infants <1 yr readage == 0), so a 6-week floor would wrongly exclude every infant. Upper bound (<13) and special-needs (<18) are modeled.is_essential_workerPE input; moot under UCC (no income limit from 2025-11-01).meets_ccdf_activity_testactivity fallback.meets_ccdf_activity_testfallback can represent the activity side).Files Added
The asset test reuses the federal
is_ccdf_asset_eligible(no state asset parameter or variable).Registry edits:
policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml— addednm_child_care_subsidiesto the CCDFaddslist so the benefit flows into the federalchild_care_subsidies.policyengine_us/programs.yaml— added the New Mexico CCAPstate_implementationsentry under federal CCDF (variable: nm_ccap,status: complete).Verification TODO
Test plan
policyengine-core test policyengine_us/tests/policy/baseline/gov/states/nm/ececd/ccap -c policyengine_us -v)